package la.iok.hzsvn.lewin.movie.operation.service;

import la.iok.hzsvn.lewin.movie.operation.model.ChargeOrderInfo;
import la.iok.hzsvn.share.annotations.NotNull;

public interface PayService {
    /**
     * 下单
     * @param order 订单信息
     * @return 支付扫描的二维码内容
     */
    String prepare(@NotNull ChargeOrderInfo order);

    /**
     * 关闭订单
     * @param order 订单信息
     */
    void closeOrder(@NotNull ChargeOrderInfo order);

    /**
     * 查询订单
     * @param order 订单对象。会更新其中的状态字段，如果成功还会更新结束时间
     */
    void queryOrder(@NotNull ChargeOrderInfo order);

    /**
     * 处理支付结果通知并解析得到订单id
     * @param notification 通知消息体
     * @return 订单id
     */
    String notify(@NotNull String notification,@NotNull String signature,@NotNull String serialNumber,
                       @NotNull String nonce,@NotNull String timestamp);
}
